// 导入获取菜单的api
import  {GetUserMenu} from '@/api/permission'
// 导入路由
import router from '@/router/index.js'
export default {
    state:{
        // 全局菜单数组
        menus:[],
    },
    mutations:{
        // 更新菜单
        setMenu(state,data){
            state.menus = data;
        }
    },
    actions:{
        getMenu(context,data){
        return new Promise(resolve=>{
            // 获取当前的菜单
            GetUserMenu(data)
            .then(res=>{
                if(res.data.code==0){
                    console.log(res.data)
                    // 更新store中的menus
                    context.commit("setMenu",res.data.list);
                    // 把菜单映射为路由配置
                    // 定义子路由数组
                    let children =[];
                    // 把菜单进行遍历
                    res.data.list.forEach(item=>{
                        // 如果当前对象没有children子元素
                        if(!item.children){
                            // 直接转换为路由配置添加到children数组里面
                           children.push({
                                name:item.name,
                                path:item.linkname,
                                component:()=>import('@/views'+item.component)
                            })
                        }else{
                            // 如果有子元素
                            for(let i=0;i<item.children.length;i++){
                                // 遍历子元素并报所有的子元素转为路由配置 添加到children数组里面
                                children.push({
                                    name:item.children[i].name,
                                    path:item.children[i].linkname,
                                    component:()=>import('@/views'+item.children[i].component)
                                })
                            }
                        }
                        
                    })
                    children.push({"path":'',redirect:'/admin/dash',name:"redirect"})
                    // 动态的配置路由 admin路由（没有权限的用户进入不到他不对应的菜单）
                   
                    var admin ={
                        name: 'admin',
                        path: '/admin',
                        component: ()=>import('@/views/admin/AdminView.vue'),
                        children  
                      } 
                    router.addRoute(admin)
                    // 代表承诺promise执行完毕
                    resolve(admin);
                    
                }
            })
        })
       
        }
    }
}